package com.huhao.wshare.service;

import com.huhao.wshare.dto.User.Request.UserLoginRequest;
import com.huhao.wshare.dto.User.Request.UserPasswordUpdateRequest;
import com.huhao.wshare.dto.User.Request.UserRegisterRequest;
import com.huhao.wshare.dto.User.Request.UserUpdateRequest;
import com.huhao.wshare.dto.User.Response.LoginResponse;
import com.huhao.wshare.dto.User.Response.UserProfileResponse;
import com.huhao.wshare.dto.User.Response.UserSearchResponse;
import com.huhao.wshare.entity.User;

/**
 * 用户服务接口 (已重构)
 * 职责：只负责用户的注册、登录、登出、个人资料查询和更新。
 * 好友管理相关的功能已移至 FriendService。
 */
public interface UserService {

    // --- 公开接口 (无需认证) ---

    User register(UserRegisterRequest request, String verificationCode) throws IllegalArgumentException;

    LoginResponse login(UserLoginRequest request) throws IllegalArgumentException;

    // --- 需要认证的接口 ---

    void logout(String account) throws IllegalArgumentException;

    UserProfileResponse getUserProfile(Long userId) throws IllegalArgumentException;

    User updateUserProfile(Long currentUserId, UserUpdateRequest request) throws IllegalArgumentException;

    /**
     * 更新当前用户的密码
     * @param currentUserId 从JWT中解析出的用户ID
     * @param request 包含新密码和验证码的请求
     * @throws IllegalArgumentException 如果验证码无效或用户不存在
     */
    void updatePassword(Long currentUserId, UserPasswordUpdateRequest request) throws IllegalArgumentException;

    /**
     * 【修改】根据用户的唯一标识 (邮箱、手机号或账号) 查询用户，并检查好友关系
     * @param currentUserId 当前登录用户的ID
     * @param identifier 用户的邮箱、手机号或账号
     * @return 包含用户ID和好友关系状态的 DTO
     * @throws IllegalArgumentException 如果用户不存在或查询自己
     */
    UserSearchResponse findUserByIdentifier(Long currentUserId, String identifier) throws IllegalArgumentException;
}
